def jiefangcheng(a, b, c, d):
    precision = 0.0001
    def f(a, b, c, d, x):
        return a * x ** 3 + b * x ** 2 + c * x + d
    left_1 = 0
    right_1 = 3
    left_2 = 3
    right_2 = 7
    left_3 = 7
    right_3 = 10



    answer = []
    def jiefangcheng1(a, b, c, d, left, right):
        while right - left >= precision:
            mid = (left + right) / 2
            if f(a, b, c, d, round(mid, 3)) * f(a, b, c, d, right) == 0 and f(a, b, c, d, right) != 0:

                return mid
            elif f(a, b, c, d, round(mid, 3)) * f(a, b, c, d, right) < 0:
                left = mid
            elif f(a, b, c, d, round(mid, 3)) * f(a, b, c, d, left) < 0:
                right = mid

    answer.append(jiefangcheng1(a, b, c, d, left_1, right_1))
    answer.append(jiefangcheng1(a, b, c, d, left_2, right_2))
    answer.append(jiefangcheng1(a, b, c, d, left_3, right_3))


    new_answer = [round(num, 3) for num in answer]

    return new_answer

print(jiefangcheng(1, -14, 56, -64))


# def f(a, b, c, d, x):
#     return a * x ** 3 + b * x ** 2 + c * x + d
# print(f(1, -14, 56, -64, 5))
